package fr.afcepf.atod16.groupe1.projet2.serviceProduit;

import fr.afcepf.atod16.groupe1.projet2.exception.ActivationException;
import fr.afcepf.atod16.groupe1.projet2.exception.ExistException;
import fr.afcepf.atod16.groupe1.projet2.exception.InvalidArgumentException;
import fr.afcepf.atod16.groupe1.projet2.exception.NotExistException;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;

/**
 * Interface webservice du service métier de gestion des produits
 * @author cedric
 */
@WebService
public interface ServiceProduitStockWebservice {
    /**
     * Crée un produit en base
     * @param codeEAN13 Le code EAN13 du produit
     * @return True si la création a réussi, false sinon
     * @throws ExistException Si un produit existe déja avec ce code EAN13
     * @throws InvalidArgumentException Si le code EAN13 fourni est illogique
     */
    @WebMethod(operationName="creerProduit")
    public boolean creerProduit(@WebParam(name="codeEAN13")
                                @XmlElement(required=true)
                                String codeEAN13) throws ExistException, InvalidArgumentException;
    
    /**
     * Desactive un produit
     * @param codeEAN13 Le code EAN13 du produit à desactiver
     * @return True si la création a réussi, false sinon
     * @throws InvalidArgumentException 
     * @throws NotExistException
     * @throws ActivationException 
     */
    @WebMethod(operationName="desactiverProduit")
    public boolean desactiverProduit(@WebParam(name="codeEAN13")
                                     @XmlElement(required=true)
                                     String codeEAN13) throws InvalidArgumentException, NotExistException, ActivationException;
}
